package com.kira.scaffoldmvc.CommonPool;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * RTA代理上下文：存储请求处理全流程的关键信息
 * 设计特点：
 * - 线程隔离：通过ThreadLocal管理，确保每个请求独立使用
 * - 链式调用：通过@Accessors(chain = true)支持方法链风格
 * - 全量数据：包含请求、响应、转发和缓存等完整生命周期信息
 */
@Data
@Accessors(chain = true)
public class RtaLog {

    /**
     * 全局唯一请求ID（TraceID）
     * 用于全链路追踪，关联请求与响应日志
     */
    private String reqXid;

    /**
     * 请求到达时间戳（毫秒）
     * 用于计算请求处理耗时
     */
    private long reqTime;

    /**
     * 请求路径
     */
    private String url;

    /**
     * HTTP请求方法（GET/POST等）
     */
    private String reqType;

    /**
     * 请求头信息
     * 存储原始HTTP请求头的键值对
     */
    private String reqHeader;

    /**
     * 请求体内容
     * 通常为JSON格式的广告请求参数
     */
    private String reqBody;

    /**
     * 响应体内容
     * 最终返回给客户端的内容
     */
    private String respBody;

    /**
     * HTTP响应状态码
     * 如200、403、500等
     */
    private Integer respCode;

    /**
     * 响应完成时间戳（毫秒）
     * 用于计算总处理耗时：respTime - reqTime
     */
    private long respTime;

    /**
     * 错误详情
     * 当请求处理过程中发生异常时记录
     */
    private String errorDetails;


    /**
     * 是否命中缓存标识
     * true表示响应数据来自缓存而非实时计算
     */
    private Boolean cached = false;


}